#!/bin/bash

workspace_dir=$(dirname $0)/  #dirname $0 会获取当前脚本所在的目录路径
echo $workspace_dir  #把 workspace_dir 变量的值输出到终端
if [ -a $workspace_dir/config.mk ] ; then   #用来检查config.mk文件是否存在的条件判断
    source $workspace_dir/config.mk  #source 命令能够在当前 shell 环境中执行指定文件里的命令
    #加载 config.mk 文件中的环境变量或者函数，对脚本运行环境进行配置
else
    echo "cannot found config.mk, aborting ... "
    exit 1
fi

# 检查是否有残留的kernel目录
if test -d os/kernel ; then #检查是否有kernel目录
	rm -rf os/kernel #rm 是用于删除文件或目录的命令。
#-r 选项的作用是递归删除，意味着可以删除目录及其包含的所有子目录和文件。-f 选项表示强制删除，会忽略不存在的文件，并且不会给出提示信息。
#此命令会彻底删除 os/kernel 目录及其内部的所有内容
fi

# 解压缩内核，并进行编译
tar xvfz os/linux.tar.gz -C os #-C 选项用于指定提取文件的目标目录，这里将文件提取到 os 目录下。
./scripts/build_kernel.sh all #all是传递给脚本的参数，表示让脚本执行完整的构建过程

# 检查是否存在编译错误
if test $? -ne 0 ; then  #$?是一个特殊变量，它存储的是上一个命令执行后的返回状态码；-ne 是比较运算符，意思是 “不等于”
	echo "Kernel build failed!"
    exit 1
fi

# 检查是否有残留的uboot目录
#if test -d os/uboot ; then
#	rm -rf os/uboot
#fi

# 解压缩uboot，并进行编译
#tar xvfz os/uboot.tar.gz -C os
if test "$CONFIG_FLASH_TYPE" == "NOR"; then
		./scripts/build_uboot.sh normal
else
		./scripts/build_uboot.sh spl
fi

# 检查是否存在编译错误
if test $? -ne 0 ; then
	echo "Uboot build failed!"
    exit 1
fi

if test "$CONFIG_CHIP_SERIES" = "AK3918AV200" ; then
    #build opensbi
    if test -d os/opensbi ; then
        rm -rf os/opensbi
    fi
    tar zxvf os/opensbi.tar.gz -C os
    ./scripts/build_opensbi.sh all
fi #ev300L不执行这段代码

./scripts/build_samples.sh all
# 检查是否存在编译错误
if test $? -ne 0 ; then
	echo "sample build failed!"
    exit 1
fi

# 将驱动KO安装到文件系统中
mkdir -p rootfs/ko 
cp -rf os/driver/* rootfs/ko/ #-rf 递归且强制复制

# 制作文件系统
./scripts/build_rootfs.sh all 
if test $? -ne 0 ; then
	echo "sample build failed!"
    exit 1
fi

# 添加md5校验信息
cd image
md5sum * > burnfile.md5
cd -  #计算 image 目录下所有文件的 MD5 哈希值，并将结果保存到 burnfile.md5 文件中

# 安装镜像
cp -rf image/* tools/burntool #burntool 是用于刻录镜像到存储设备（如 SD 卡、U 盘）的工具，复制镜像文件就是为后续的刻录操作做准备

# 添加env*文件的md5校验信息
cd tools/burntool
md5sum env* >> burnfile.md5 #计算当前目录下所有以env开头的文件的 MD5 哈希值，并将结果追加到burnfile.md5文件中

echo "11111111111111111111111111111111111111111111"